package about_collections.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

//        map集合的遍历，可以多写几种(3分)
public class MapEntry {
    public static void main(String[] args) {

        Map<Integer,String> map = new HashMap<>();
        map.put(1, "Tom");
        map.put(2, "Jerry");
        map.put(3, "Andy");
        map.put(4, "John");

        // 1.使用 for-each 遍历 Map 的 entrySet
        // 这种方式会把 Map 转换成 Set，再遍历这个 Set 中的每一个元素。每一个元素都是一个 Map.Entry 对象，里面包含了键和值。

        // 先往 about_collections.map 中添加键值对
        for (Map.Entry<Integer,String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        System.out.println("==========================================");

        //2.使用迭代器遍历 Map 的 entrySet
        //这种方式与第一种方式类似，只是使用了迭代器来遍历。

        Iterator<Map.Entry<Integer,String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer,String> entry = iterator.next();
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        System.out.println("==========================================");

        //3.只遍历 Map 的 Key 或 Value
        //这种方式可以直接遍历 Map 的键或值，而不需要遍历整个 entrySet。

        for (Integer key : map.keySet()) {
            System.out.println(key);
        }
        for (String value : map.values()) {
            System.out.println(value);
        }
    }
}
